package datatypes;

import java.util.StringTokenizer;

public class PatientTemplate {
	private final int min_status;
	private final int max_status;
	private final String diagnose;
	private final Kategorie kategorie;
	private final boolean naPflichtig;
	private final boolean krhPflichtig;
	private final boolean gehfaehig;
	private final boolean benTragehilfe;
	
	public PatientTemplate(int min_status, int max_status, String diagnose, Kategorie kategorie, boolean naPflichtig, boolean krhPflichtig, boolean gehfaehig, boolean benTragehilfe) {
		this.min_status = min_status;
		this.max_status = max_status;
		this.diagnose = diagnose;
		this.kategorie = kategorie;
		this.naPflichtig = naPflichtig;
		this.krhPflichtig = krhPflichtig;
		this.gehfaehig = gehfaehig;
		this.benTragehilfe = benTragehilfe;
	}
	
	public PatientTemplate(String deserialisationString)
	{
		String[] fields = deserialisationString.split("+");
		
		this.diagnose = fields[0];
		this.min_status = Integer.valueOf(fields[1]);
		this.max_status = Integer.valueOf(fields[2]);
		this.kategorie = Kategorie.valueOf(fields[3]);
		this.naPflichtig = Boolean.parseBoolean(fields[4]);
		this.krhPflichtig = Boolean.parseBoolean(fields[5]);
		this.gehfaehig = Boolean.parseBoolean(fields[6]);
		this.benTragehilfe = Boolean.parseBoolean(fields[7]);
	}

	public int getMin_status() {
		return min_status;
	}

	public int getMax_status() {
		return max_status;
	}

	public String getDiagnose()
	{
		return diagnose;
	}
	
	public Kategorie getKategorie() {
		return kategorie;
	}

	public boolean isNaPflichtig() {
		return naPflichtig;
	}

	public boolean isKrhPflichtig() {
		return krhPflichtig;
	}

	public boolean isGehfaehig() {
		return gehfaehig;
	}

	public boolean benTragehilfe() {
		return benTragehilfe;
	}
	
	public boolean isValid()
	{
		return ((kategorie!=null) && (diagnose!=null));
	}
	
	public Patient generatePatient()
	{
		return new Patient( (float) (min_status + (Math.random() * (max_status-min_status))), kategorie, naPflichtig, krhPflichtig, gehfaehig, benTragehilfe, diagnose);
	}
	
	public String toSerialisationString()
	{
		return diagnose + "+" + min_status + "+" + max_status + "+" + kategorie.toString() + "+" + naPflichtig + "+" + krhPflichtig + "+" + gehfaehig + "+" + benTragehilfe;
	}
	
	@Override
	public String toString() {
		return this.diagnose + " - " + this.kategorie + ": " + min_status + "-" + max_status;
	}
}
